import pyaudio
import numpy as np

# 初始化PyAudio
p = pyaudio.PyAudio()

try:
    # 打开麦克风输入流
    stream = p.open(format=pyaudio.paInt16,
                    channels=1,
                    rate=44100,
                    input=True,
                    frames_per_buffer=1024)

    # 进行声音监听
    while True:
        # 从麦克风读取数据
        data = stream.read(1024)
        # 将读取的数据转换为数组（使用np.frombuffer代替np.fromstring）
        data = np.frombuffer(data, dtype=np.int16)

        # 在这里处理数据（例如，计算音量）
        total = np.sum(np.abs(data))  # 计算绝对值总和以模拟音量
        # print(total)
        if total >= 600000:
            break
        else:
            continue

except KeyboardInterrupt:
    # 用户按下Ctrl+C时退出循环
    print("捕获中断，正在关闭流...")
finally:
    # 无论是否发生异常，都尝试关闭流和PyAudio实例
    if stream.is_active():
        stream.stop_stream()
        stream.close()
    p.terminate()
